ADO.NET gebruiken om een DAL te maken
Home

ADO.NET gebruiken om een DAL te maken

ADO.NET gebruiken om een DAL te maken

De Data Access Layer zijn de klassen die instaan voor de verbinding tussen de applicatie en de data store. Deze klassen maken een verbinding met de database en manipuleren de gegevens uit de database zodat ze door de applicatie gebruikt kunnen worden. De gegevens in een SQL database zijn opgeslagen in tabellen. C# bijvoorbeeld kent dat gegevenstype niet en kan dus niet rechtstreeks werken met SQL tabellen. De DAL zet die tabellen om in gegevenstructuren die C# wel kan manipuleren. Een rij wordt omgezet in een datadictionay of een object, tabellen in een array van datadictionaries of in generieke lijsten. Omgekeerd zet de DAL C# gegevenstructuren om in SQL gegevenstructuren met behulp van SQL statements. Deze ORM (object-relational mapping) zonderen we af in een speciefieke en aparte set van klassen die door de andere onderdelen van de app gebruikt kan worden, bijvoorbeeld het Model, de Business Logic klassen enz. In het Entity Framework zit de DAL in de DbContext klasse.

Probleem

Er dient in onze applicatie aldus een klasse voorzien te worden die het informatieverkeer van en naar de databank behandelt. De DAL klasse implementeert de IDal interface. Dat maakt het gemakkelijker onze applicatie te testen.

Design

Velden

Naam Bereik Type Opmerking
message protected string
rowCount protected int
connectionString protected string

Methoden

Naam Bereik Parameters Retourneert Opmerking
create public - Int Een nieuw product wordt in de database geïnserted. Retourneert 1 bij succes en -1 bij falen.
update public - Boolean Een bestaand product wordt in de database aangepast. Retourneert true bij succes en false bij falen.
delete public - Boolean Een bestaand product wordt uit de database verwijderd. Retourneert true bij succes en false bij falen.
readOne public - Boolean Het product wordt rechtstreeks in het model geplaatst en de methode geeft true of false terug naargelang het selecteren is gelukt of niet
readAll public - Collection Retourneert een collectie met alle producten of een lege bij falen.
readById public - Collection Retourneert een collectie met geselecteerd product of een lege bij falen.
readByName public - Collection Retourneert een collectie met geselecteerde producten of een lege bij falen.
readLikeName public - Collection Retourneert een collectie met geselecteerde producten of een lege bij falen.
readLikeXName public - Collection Retourneert een collectie met geselecteerde producten of een lege bij falen.

Oplossing

Interfaces

De DAL klassen hebben meestal een vaste structuur. De klasse bevat methoden om de gegevens in een tabel te inserten, updaten, deleten en te selecteren, één, alle of rijen die beantwoorden aan een bepaald zoekcriteria.

  1. Een DAL interface

Je kan je kennis over interfaces opfrissen op C# - Interfaces of in het lesmateriaal Programmeren 2.

Dal klassen voor entiteiten

  1. Er is nogal wat discussie over het al dan niet gebruiken van SQL stored procedures in een DAL klasse. Je kan immers op drie manieren SQL statements vanuit C# laten uitvoeren. In Stored procedures of niet vind je voor alle drie de methoden een voorbeeld. Ik verkies het gebruik van stored procedures omdat je op die manier het SQL gebeuren maximaal loskoppelt van het C# gebeuren. Op die manier kan ik de SQL statements onafhankelijk van C# in SQL maken en uittesten. Het debuggen van de app in C# wordt veel gemakkelijker en overzichterlijker omdat het debuggen zich dan beperkt tot fouten in de C# code en niet in de SQL statements.
  2. Een DAL klasse maken voor een entiteit (voor de entiteit EventCategory)
  3. Later maken we een generieke DAL klasse, maar daarvoor moeten we leren werken met Reflection in C#: Reflection met de Type.GetProperties methode.
JI
2017-09-16 12:50:02